function U=DE(X,bestX,Bound)
% 差分进化主函数
% INPUTS：
%   X       - 当前种群矩阵 (NP × Dim)，NP为种群规模，Dim为维度
%   bestX   - 当前最优个体（1 × Dim 向量），用于某些变异策略
%   Bound   - 搜索空间边界，大小为 2 × Dim：
%             Bound(1,:) 为下界，Bound(2,:) 为上界
%
% OUTPUTS：
%   U       - 交叉操作后的候选新种群 (NP × Dim)
%
% USAGE：
%   mutation(X,bestX,F,mutationStrategy)    → 生成变异个体
%   crossover(X,V,CR,crossStrategy,Bound)   → 生成交叉个体并处理边界
%
% mutationStrategy：
%   1：DE/rand/1        V = X_r1 + F * (X_r2 - X_r3)
%   2：DE/best/1        V = bestX + F * (X_r1 - X_r2)
%   3：DE/rand-to-best/1 V = X_i + F*(bestX - X_i) + F*(X_r1 - X_r2)
%   4：DE/best/2        V = bestX + F*(X_r1 - X_r2 + X_r3 - X_r4)
%   5：DE/rand/2        V = X_r1 + F*(X_r2 - X_r3 + X_r4 - X_r5)
%
% crossStrategy：
%   1：binomial crossover （二项式交叉）
%   2：exponential crossover （指数交叉）



F=0.8;            % scaling factor (缩放因子)
CR=1;             % crossover rate (交叉率)，
mutationStrategy=2; % 选择变异策略，这里默认使用 DE/best/1
crossStrategy=1;    % 选择交叉策略，这里默认使用 binomial crossover

% ----------------- 算法主流程（单次迭代示例） -----------------
% while Generation < maxIteration   % 外层迭代循环

    % 1. 变异操作 → 生成候选变异个体 V
    V = mutation(X, bestX, F, mutationStrategy);

    % 2. 交叉操作 → 生成试验个体 U，并保证其在搜索边界内
    U = crossover(X, V, CR, crossStrategy, Bound);

% end
% -------------------------------------------------------------------------
end
